import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import { resolve } from 'path'

import Icons from 'unplugin-icons/vite'
import AutoImport from 'unplugin-auto-import/vite'
import IconsResolver from 'unplugin-icons/resolver'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import autoprefixer from 'autoprefixer'
// https://vite.dev/config/

//安装自动导入插件 (三个)
// 安装 pnpm add unplugin-vue-components unplugin-auto-import unplugin-icons

//安装autoprefixer插件实现多种浏览器的样式兼容
//例如你写了display:flex;
//autoprefixer 会根据目标浏览器的兼容性数据，自动转换成：
// display: -webkit-box;
// display: -ms-flexbox;
// display: flex;

export default defineConfig({
  plugins: [
    // 自动导入element-plus组件
    vue(),
    // 支持使用vue的jsx语法
    vueJsx(),
    AutoImport({
      // 包括的文件类型
      include: [/\.[tj]sx?$/, /\.vue$/, /\.vue\?vue/, /\.md$/],
      resolvers: [ElementPlusResolver(), IconsResolver({ prefix: 'Icon' })],
      dts: 'src/auto-imports.d.ts',
    }),
    Components({
      // 指定需要扫描的目录，生成ts文件类型组件
      dirs: [
        'src/components',
        //'src/views/Chat/component', // 添加你的目录
        // 可以添加更多需要扫描的目录
      ],
      resolvers: [
        // 自动注册图标组件，自动导入element-plus组件， 这些图标会自动按需导入  <IEpHome />
        IconsResolver({ enabledCollections: ['ep'] }),
        ElementPlusResolver(),
      ],
      //输出编译过后的ts目录，也就是自动生成的ts文件，
      dts: 'src/components.d.ts',
    }),
    Icons({ autoInstall: true }),
  ],
  resolve: {
    alias: [
      {
        find: '@',
        replacement: resolve(__dirname, './src'),
      },
    ],
  },
  define: {
    'process.env': {},
  },
  css: {
    postcss: {
      plugins: [
        autoprefixer({}), // 自动添加样式兼容前缀
      ],
    },
  },

  //配置反向代理服务器
  server: {
    //主要是加上这段代码
    host: '127.0.0.1',
    port: 3000,
    // 这里注意特别，因为baseUrl是/api所以匹配上到了下面url
    proxy: {
      '^/api': {
        //target: 'http://localhost:8080', //实际请求地址
        target: loadEnv('development', process.cwd()).VITE_API_PREFIX,
        changeOrigin: true,
        //rewrite: (path) => path.replace(/^\/api/, ''),
      },
    },
  },
})
